Software training آموزش نرم افزار.تكنولوژي هاي جديد و ... الگوريتم اعمال فيلتر قرمز بر روي تصوير ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم، رنگ آبي و سبز را با 0 مقدار دهي مي كنيم، ولي به مقدار رنگ قرمز دست نمي زنيم. مقدار بدست آمده براي هر رنگ را در يك متغير (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد) قرار مي دهيم. در نهايت با استفاده از تابع SetPixel ، پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم.
![]()
الگوريتم اعمال فيلتر سبز بر روي تصوير ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم، رنگ آبي و قرمز را با 0 مقدار دهي مي كنيم، ولي به مقدار رنگ سبز دست نمي زنيم. مقدار بدست آمده براي هر رنگ را در يك متغير (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد) قرار مي دهيم. در نهايت با استفاده از تابع SetPixel ، پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم. ![]()
الگوريتم اعمال فيلتر آبي بر روي تصوير ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم، رنگ قرمز و سبز را با 0 مقدار دهي مي كنيم، ولي به مقدار رنگ قرمز دست نمي زنيم. مقدار بدست آمده براي هر رنگ را در يك متغير (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد) قرار مي دهيم. در نهايت با استفاده از تابع SetPixel ، پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم. ![]()
الگوريتم اعمال روشنايي بر روي تصوير براي استفاده از اين الگوريتم ابتدا بايد هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد)، به هر كدام از سه رنگ اصلي قرمز، آبي و سبز، مقدار تنظيم شده براي روشنايي را اضافه مي كنيم سپس با استفاده از دستور شرطي، معين مي كنيم كه اگر مقدار به دست آمده براي هر يك از رنگ ها از 0 كمتر بود آن را با 1 مقدار دهي كند و اگر از 255 بزرگتر بود آن را با 255 مقدار دهي كند. در نهايت با استفاده از تابع SetPixel پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم. ![]()
الگوريتم اعمال كنتراست بر روي تصوير مقدار مورد نظر براي اعمال كنتراست بايد عددي بين 100 تا -100 باشد. عدد وارد شده توسط كاربر بايد در 100.0 جمع شود و سپس در 100.0 تقسيم شود و در نهايت مقدار به دست آمده را در خودش ضرب مي كنيم و در متغير Contrast قرار مي دهيم. هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد اعشاري (Double ) قرار مي دهيم (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد)، مقدار رنگ قرمز را در 255.0 تقسيم مي كنيم، 0.5 از آن كم مي كنيم در Contrast ضرب مي كنيم 0.5 به آن اضافه مي كنيم و در مقدار بدست آمده را در 255 ضرب مي كنيم سپس با استفاده از دستور شرطي تعيين مي كنيم كه اگر عدد بدست آمده از 0 كمتر باشد آن را با 0 مقدار دهي كند و اگر عدد از 255 بزرگتر بود آن با 255 مقدار دهي كند اين كار را با ساير متغيرهاي مربط به رنگ ها انجام مي دهيم و در نهايت با استفاده از تابع SetPixel پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم. ![]()
الگوريتم Invert اين الگوريتم برخلاف ظاهري مشكل، ولي به جرأت مي توان گفت كه ساده ترين الگوريتم است. براي استفاده از اين الگوريتم ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد)، سپس مقدار بدست آمده از تمام متغيرهاي مربوط به رنگ ها را از 255 كم مي كنيم، در نهايت با استفاده از تابع SetPixel پيكسل و متغيرهاي حاوي رنگهاي قرمز، آبي و سبز را در محل اصلي قرار مي دهيم. ![]()
تبديل تصوير به فرمت GrayScale از اين الگوريتم براي تبديل عكس هاي رنگي به سياه و سفيد استفاده مي شود. ابتدا هر پيكسل از تصوير را جدا كرده و در يك متغير از نوع رنگ (Color ) قرار مي دهيم، مقدار رنگ قرمز، آبي و سبز آن را استخراج كرده، هر يك را در يك متغيري از نوع عدد صحيح (Integer ) قرار مي دهيم (متغييري كه براي نگهداري مقدار رنگ ها درنظر گرفته مي شود بهتر است نام رنگ باشد)، سپس مقدار همه متغيرها را در هم جمع مي كنيم و بر 3 تقسيم مي كنيم و در يك متغير (بعنوان مثال با نام colorGray ) از نوع عدد صحيح (Integer ) قرار مي دهيم و در نهايت با استفاده تابع SetPixel پيكسل و رنگ ايجاد شده (همان ColorGray ) را در محل اصلي قرار مي دهيم. ![]()
الگوريتم تشخيص لبه هدف از تشخيص لبه، تشخيص لبه ها در تصوير مي باشد. در اين روش در تمام بخش هاي تصوير، پيكسل ها را بررسي مي كنيم و هر رنگ را با پيكسل مجاور سمت راست و پايين آن مقايسه مي كنيم. اگر نتيجه مقايسه زياد باشد در نتيجه در خروجي به رنگ سفيد و در غير اينصورت به رنگ سياه رسم مي شود.
به عنوان مثال اگر دو رنگ (C1=(R1,G1,B1 و (C2(R2,G2,B2 داشته باشيم اختلاف يا فاصله بين دو رنگ با فرمول زير محاسبه مي شود: ![]()
استخراج رنگ از تصوير در اين الگريتم بجاي بررسي هر پيكسل با پيكس هاي مجاورش آن را با رنگ مشخصي مقايسه مي كنيم. اين الگريتم تمامي اشياء موجود در تصوير را كه رنگ مشخصي دارند پيدا مي كند. از اين الگريتم بيشتر در رباتيك استفاده مي شود. به عنوان مثال در تصويري كه توسط دوربين ربات گرفته شده است توپ قرمز رنگ مشخص مي شود و ربات به سمت آن حركت مي كند. در اين الگريتم مقدار رنگهاي هر پيكسل با مقدار رنگهاي، رنگ انتخاب شده مقايسه مي شود. اگر نتيجه مقايسه زياد باشد در نتيجه در خروجي به رنگ سفيد و در غير اينصورت به رنگ سياه رسم مي شود. ![]() Horizontal flip اين الگوريتم را مي توان با كمترين مقدار كد نويسي پياده سازي كرد. براي پياده سازي اين الگوريتم ابتدا تصوير را در يك متغير از نوع Bimap قرار مي دهيم.
Dim Image As New Bitmap(picCanvas.Image)
و سپس از متد RotateFlip براي اعمال Flip بر روي تصوير استفاده مي كنيم و در نهايت تصوير موجود در متغير را به كنترل Image موجود در برنامه منتقل مي كنيم.
Image.RotateFlip(RotateFlipType.RotateNoneFlipX) Vertical flip پياده سازي اين الگريتم مانند پياده سازي الگريتم قبلي است با اين تفاوت كه در كد نويسي مقداري تفاوت دارند.
Image.RotateFlip(RotateFlipType.RotateNoneFlipY)
پياده سازي الگريتم Rotate اين الگوريتم مانند الگريتم Flip است. مي توان آن را با كمترين مقدار كد نويسي پياده سازي كرد. براي پياده سازي اين الگوريتم ابتدا تصوير را در يك متغير از نوع Color قرار مي دهيم و سپس از متد RotateFlip براي اعمال Rotate بر روي تصوير استفاده مي كنيم و در نهايت تصوير موجود در متغير را به كنترل Image موجود در برنامه منتقل مي كنيم.
Image.RotateFlip(RotateFlipType.Rotate90FlipNo)
نظرات شما عزیزان:
درباره وبلاگ به وبلاگ من خوش آمدید آخرین مطالب آرشيو وبلاگ نويسندگان پيوندها ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
![]() |
|||
![]() |